home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / asm / alib11b.zip / CODE1.ZIP / DISPTEXT / CRTSAVE.ASM next >
Assembly Source File  |  1994-10-04  |  2KB  |  94 lines

  1.     page    66,132
  2. ;******************************** CRT8.ASM   *********************************
  3.  
  4. comment 
  5. ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -( DISPLAY )
  6. DISK_TO_CRT - loads a screen image file saved by CRT_TO_DISK
  7. ;
  8. ; inputs:    DS:[DX] = address of ASCIIZ filename
  9. ; outputs:   if CF = 1, AX = MS-DOS file I/O error code
  10. ;            if CF = 0, no error
  11. ;            registers modified = AX            
  12. ;
  13. ;notes:     The input file is assumed to be closed when DISK_TO_CRT is
  14. ;           called, and is left closed upon exit.
  15. ;* * * * * * * * * * * * * *
  16. 
  17.     public    disk_to_crt
  18. DISK_TO_CRT    PROC    FAR
  19.     MOV     AH,01
  20.     JMP     ctd_entry
  21. DISK_TO_CRT    ENDP
  22. comment 
  23. ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -( DISPLAY )
  24. CRT_TO_DISK - saves a screen image as a file
  25. ;
  26. ; inputs:    DS:[DX] = address of ASCIIZ filename
  27. ; outputs:   if CF = 1, AX = MS-DOS file I/O error code
  28. ;            if CF = 0, no error
  29. ;            registers modified = AX
  30. ;* * * * * * * * * * * * * *
  31. 
  32.     public    crt_to_disk
  33. CRT_TO_DISK    PROC    FAR
  34.     MOV     AH,00
  35. ctd_entry:
  36.     PUSHF
  37.     PUSH    BP
  38.     MOV     BP,SP
  39.     SUB     SP,+02
  40.     APUSH   BX,CX,DX,SI,DS,ES,DX
  41.     MOV     [BP-02],AH
  42.     mov     al,cs:lib_info.crt_rows
  43.     mov     ch,cs:lib_info.crt_columns
  44. ;;    call    DISPLAY_PARMS ;out: al=rows ch=columns bx:si=crt buf  dx=cga port
  45.     MUL     CH
  46.     SHL     AX,1
  47.     POP     DX
  48.     PUSH    AX
  49.     XOR     CX,CX
  50.     MOV     AX,3C00h
  51.     ADD     AH,[BP-02]
  52.     INT     21h            ;create file ds:dx using attribute (cx)
  53.     POP     CX
  54.     mov     ds,cs:lib_info.crt_seg
  55.     JB        ctd_exit
  56.     MOV     BX,AX
  57.     MOV     DX,0        ;assume display offset is zero (page 0)
  58.     MOV     AH,40h
  59.     SUB     AH,[BP-02]
  60.     INT     21h            ;write to file bx=handle cx=len ds:dx=data
  61.     JB      CTD_CONT
  62.     CMP     AX,CX
  63.     JZ      CTD_01
  64. CTD_CONT:
  65.     PUSH    AX
  66.     MOV     AH,3Eh
  67.     INT     21h            ;close file handle (bx)
  68.     POP     AX
  69.     STC
  70.     JMP     ctd_exit
  71.  
  72. CTD_01:    
  73.     MOV     AH,3Eh
  74.     INT     21h            ;close file handle (bx)
  75.     JB      ctd_exit
  76.     CLC
  77. ctd_exit:
  78.     APOP    ES,DS,SI,DX,CX,BX
  79.     MOV     SP,BP
  80.     POP     BP
  81.     JB      ctd_exit2
  82.     POPF
  83.     CLC
  84.     RETF
  85. ctd_exit2:
  86.     POPF
  87.     STC
  88.     RETF
  89. CRT_TO_DISK    ENDP
  90.  
  91.     end
  92.